1. Field of the Invention
The invention relates generally to storage controllers of storage systems and more specifically relates to apparatus and methods for routing of incoming I/O requests in a split-path architecture storage controller concurrent with reception of frames of the I/O request.
2. Related Patents
This patent is related to commonly owned U.S. patent application Ser. No. 12/854,765 filed 11 Aug. 2010 entitled APPARATUS AND METHODS FOR MANAGING EXPANDED CAPACITY OF VIRTUAL VOLUMES IN A STORAGE SYSTEM and is related to commonly owned U.S. patent application Ser. No. 12/854,800 filed 11 Aug. 2010 entitled APPARATUS AND METHODS FOR LOOK-AHEAD VIRTUAL VOLUME META-DATA PROCESSING IN A STORAGE CONTROLLER, both of which are hereby incorporated by reference.
3. Discussion of Related Art
One or more storage controllers are typically embedded within a storage system. The storage controllers are adapted to receive I/O requests from attached host systems and to process the received I/O requests to access information on physical storage devices of the storage system. In general, a storage controller comprises a general or special purpose processor and associated program memory from which stored programmed instructions are fetched and executed by the processor (CPU). The CPU is coupled with physical storage devices within, or associated with, the storage system and accesses the storage devices in accordance with the directives of the received I/O requests.
Even with the significant computational capacity of modern CPUs, overhead processing of the storage controller can impose significant latency on the processing of an I/O request. This overhead latency reduces overall throughput of the storage system in processing I/O requests. This problem is further exacerbated where the storage devices are semiconductor storage devices (e.g., so-called RAMdisks or flash memory disks) such that the mechanical latencies of rotating magnetic/optical storage devices are not present. The processing overhead of the controller may overlap mechanical latencies of traditional rotating storage devices and thus may present little or no problem. However, since semiconductor storage device present no such mechanical latencies, the processing overhead of the storage controller CPU may present a new bottleneck to storage system performance.
To reduce the overhead processing associated with common I/O requests (i.e., read and write I/O requests), some storage controllers in some storage systems have been designed according to a so-called “split-path” architecture. In such a split-path storage controller, the traditional processing of software operable on the CPU of the storage controller is a first path—i.e., a software I/O processing path or “soft-path” I/O processor. A second I/O processing component is provided as customized circuits adapted to fully process common I/O requests (e.g., read and write requests) with minimal or no processing required by the CPU of the storage controller. This second path is often referred to as a “fast-path” I/O processor in that the custom circuits are adapted to process certain common I/O requests much faster than a CPU/software processing path can ever achieve. The CPU-based I/O processing path (soft-path) may assume responsibility for less frequent, control related, I/O requests (as distinct from common read and write requests) and may perform more generalized processing for error recovery and retry of operations that fail in processing of the fast-path I/O processor. Read and write I/O requests often comprise a sequence of related frame transmissions between a host system and a storage device (through the storage controller). The storage controller must make a routing determination for each frame received to determine the appropriate I/O processor to handle each frame.
In some fast-path (i.e., split path) architecture storage controllers, the slower CPU-based I/O processing path is still involved in making routing determinations as to whether each frame of an I/O request should be processed by (i.e., routed to) the CPU (i.e., soft-path) or should be processed by the circuits of the fast-path I/O processor (i.e., fast-path). In present split-path architecture storage controllers, these routing determinations require processing within the CPU of the storage controller (fetching and executing associated instructions). Further, in some present split-path architecture controllers, each routing determination is made by the CPU after an entire frame/packet is received. Thus, even in a split-path architecture storage controller, the CPU processing may impose some degree of latency delay in the processing of common I/O requests to determine routing of the received frames to the appropriate I/O processor.
Thus, it is an ongoing challenge to reduce the overheard processing involved in routing determinations for I/O requests to be processed in a split-path storage controller.